<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Quick  Reference</title>
    <link rel="stylesheet" type="text/css" href="css/jazzy.css" />
    <link rel="stylesheet" type="text/css" href="css/highlight.css" />
    <meta charset='utf-8'>
    <script src="js/jquery.min.js" defer></script>
    <script src="js/jazzy.js" defer></script>
    
    <script src="js/lunr.min.js" defer></script>
    <script src="js/typeahead.jquery.js" defer></script>
    <script src="js/jazzy.search.js" defer></script>
  </head>
  <body>
    <a title="Quick  Reference"></a>
    <header>
      <div class="content-wrapper">
        <p><a href="index.html">Quick 7.6.2 Docs</a> (84% documented)</p>
        <p class="header-right"><a href="https://github.com/Quick/Quick"><img src="img/gh.png" alt="GitHub"/>View on GitHub</a></p>
        <div class="header-right">
          <form role="search" action="search.json">
            <input type="text" placeholder="Search documentation" data-typeahead>
          </form>
        </div>
      </div>
    </header>
    <div class="content-wrapper">
      <p id="breadcrumbs">
        <a href="index.html">Quick</a>
      </p>
    </div>
    <div class="content-wrapper">
      <nav class="sidebar">
        <ul class="nav-groups">
          <li class="nav-group-name">
            <a href="Classes.html">Classes</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="Classes/AsyncBehavior.html">AsyncBehavior</a>
              </li>
              <li class="nav-group-task">
                <a href="Classes/AsyncExample.html">AsyncExample</a>
              </li>
              <li class="nav-group-task">
                <a href="Classes/AsyncExampleGroup.html">AsyncExampleGroup</a>
              </li>
              <li class="nav-group-task">
                <a href="Classes/AsyncSpec.html">AsyncSpec</a>
              </li>
              <li class="nav-group-task">
                <a href="Classes/Behavior.html">Behavior</a>
              </li>
              <li class="nav-group-task">
                <a href="Classes/Callsite.html">Callsite</a>
              </li>
              <li class="nav-group-task">
                <a href="Classes/Example.html">Example</a>
              </li>
              <li class="nav-group-task">
                <a href="Classes/ExampleBase.html">ExampleBase</a>
              </li>
              <li class="nav-group-task">
                <a href="Classes/ExampleGroup.html">ExampleGroup</a>
              </li>
              <li class="nav-group-task">
                <a href="Classes/ExampleMetadata.html">ExampleMetadata</a>
              </li>
              <li class="nav-group-task">
                <a href="Classes/QCKConfiguration.html">QCKConfiguration</a>
              </li>
              <li class="nav-group-task">
                <a href="Classes/QuickConfiguration.html">QuickConfiguration</a>
              </li>
              <li class="nav-group-task">
                <a href="Classes/QuickTestSuite.html">QuickTestSuite</a>
              </li>
              <li class="nav-group-task">
                <a href="Classes.html#/_CallsiteBase">_CallsiteBase</a>
              </li>
              <li class="nav-group-task">
                <a href="Classes.html#/c:@M@Quick@objc(cs)_CallsiteBase">_CallsiteBase</a>
              </li>
              <li class="nav-group-task">
                <a href="Classes.html#/_ExampleBase">_ExampleBase</a>
              </li>
              <li class="nav-group-task">
                <a href="Classes.html#/c:@M@Quick@objc(cs)_ExampleBase">_ExampleBase</a>
              </li>
              <li class="nav-group-task">
                <a href="Classes.html#/_ExampleMetadataBase">_ExampleMetadataBase</a>
              </li>
              <li class="nav-group-task">
                <a href="Classes.html#/c:@M@Quick@objc(cs)_ExampleMetadataBase">_ExampleMetadataBase</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="Functions.html">Functions</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="Functions.html#/s:5Quick11currentSpecSo10XCTestCaseCSgyF">currentSpec()</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="Protocols.html">Protocols</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="Protocols/AsyncDSLUser.html">AsyncDSLUser</a>
              </li>
              <li class="nav-group-task">
                <a href="Protocols/SyncDSLUser.html">SyncDSLUser</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="Structs.html">Structures</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="Structs/StopTest.html">StopTest</a>
              </li>
              <li class="nav-group-task">
                <a href="Structs/TestState.html">TestState</a>
              </li>
            </ul>
          </li>
          <li class="nav-group-name">
            <a href="Typealiases.html">Type Aliases</a>
            <ul class="nav-group-tasks">
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick24AfterExampleAsyncClosurea">AfterExampleAsyncClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick19AfterExampleClosurea">AfterExampleClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick30AfterExampleNonThrowingClosurea">AfterExampleNonThrowingClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick36AfterExampleWithMetadataAsyncClosurea">AfterExampleWithMetadataAsyncClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick31AfterExampleWithMetadataClosurea">AfterExampleWithMetadataClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick42AfterExampleWithMetadataNonThrowingClosurea">AfterExampleWithMetadataNonThrowingClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick22AfterSuiteAsyncClosurea">AfterSuiteAsyncClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick17AfterSuiteClosurea">AfterSuiteClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick28AfterSuiteNonThrowingClosurea">AfterSuiteNonThrowingClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick25AroundExampleAsyncClosurea">AroundExampleAsyncClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick20AroundExampleClosurea">AroundExampleClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick31AroundExampleNonThrowingClosurea">AroundExampleNonThrowingClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick37AroundExampleWithMetadataAsyncClosurea">AroundExampleWithMetadataAsyncClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick32AroundExampleWithMetadataClosurea">AroundExampleWithMetadataClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick43AroundExampleWithMetadataNonThrowingClosurea">AroundExampleWithMetadataNonThrowingClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/AsyncSpecBase">AsyncSpecBase</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick13AsyncSpecBasea">AsyncSpecBase</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick25BeforeExampleAsyncClosurea">BeforeExampleAsyncClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick20BeforeExampleClosurea">BeforeExampleClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick31BeforeExampleNonThrowingClosurea">BeforeExampleNonThrowingClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick37BeforeExampleWithMetadataAsyncClosurea">BeforeExampleWithMetadataAsyncClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick32BeforeExampleWithMetadataClosurea">BeforeExampleWithMetadataClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick43BeforeExampleWithMetadataNonThrowingClosurea">BeforeExampleWithMetadataNonThrowingClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick23BeforeSuiteAsyncClosurea">BeforeSuiteAsyncClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick18BeforeSuiteClosurea">BeforeSuiteClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick29BeforeSuiteNonThrowingClosurea">BeforeSuiteNonThrowingClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick14ExampleClosurea">ExampleClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick13ExampleFiltera">ExampleFilter</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/FileString">FileString</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick10FileStringa">FileString</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick0A10Configurera">QuickConfigurer</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick20SharedExampleClosurea">SharedExampleClosure</a>
              </li>
              <li class="nav-group-task">
                <a href="Typealiases.html#/s:5Quick20SharedExampleContexta">SharedExampleContext</a>
              </li>
            </ul>
          </li>
        </ul>
      </nav>
      <article class="main-content">
        <section>
          <section class="section">
            
            <p><img src="http://f.cl.ly/items/0r1E192C1R0b2g2Q3h2w/QuickLogo_Color.png" alt=""></p>

<p><a href="https://github.com/Quick/Quick/actions/workflows/ci-xcode.yml"><img src="https://github.com/Quick/Quick/actions/workflows/ci-xcode.yml/badge.svg" alt="Build Status"></a>
<a href="https://cocoapods.org/pods/Quick"><img src="https://img.shields.io/cocoapods/v/Quick.svg" alt="CocoaPods"></a>
<a href="https://cocoapods.org/pods/Quick"><img src="https://img.shields.io/cocoapods/p/Quick.svg" alt="Platforms"></a></p>

<p>Quick is a behavior-driven development framework for Swift and Objective-C.
Inspired by <a href="https://github.com/rspec/rspec">RSpec</a>, <a href="https://github.com/specta/specta">Specta</a>, and <a href="https://github.com/onsi/ginkgo">Ginkgo</a>.</p>

<p><img src="https://raw.githubusercontent.com/Quick/Assets/master/Screenshots/QuickSpec%20screenshot.png" alt=""></p>
<pre class="highlight swift"><code><span class="c1">// Swift</span>

<span class="kd">import</span> <span class="kt">Quick</span>
<span class="kd">import</span> <span class="kt">Nimble</span>

<span class="kd">class</span> <span class="kt">TableOfContentsSpec</span><span class="p">:</span> <span class="kt">QuickSpec</span> <span class="p">{</span>
  <span class="k">override</span> <span class="kd">class</span> <span class="kd">func</span> <span class="nf">spec</span><span class="p">()</span> <span class="p">{</span>
    <span class="nf">describe</span><span class="p">(</span><span class="s">"the 'Documentation' directory"</span><span class="p">)</span> <span class="p">{</span>
      <span class="nf">it</span><span class="p">(</span><span class="s">"has everything you need to get started"</span><span class="p">)</span> <span class="p">{</span>
        <span class="k">let</span> <span class="nv">sections</span> <span class="o">=</span> <span class="kt">Directory</span><span class="p">(</span><span class="s">"Documentation"</span><span class="p">)</span><span class="o">.</span><span class="n">sections</span>
        <span class="nf">expect</span><span class="p">(</span><span class="n">sections</span><span class="p">)</span><span class="o">.</span><span class="nf">to</span><span class="p">(</span><span class="nf">contain</span><span class="p">(</span><span class="s">"Organized Tests with Quick Examples and Example Groups"</span><span class="p">))</span>
        <span class="nf">expect</span><span class="p">(</span><span class="n">sections</span><span class="p">)</span><span class="o">.</span><span class="nf">to</span><span class="p">(</span><span class="nf">contain</span><span class="p">(</span><span class="s">"Installing Quick"</span><span class="p">))</span>
      <span class="p">}</span>

      <span class="nf">context</span><span class="p">(</span><span class="s">"if it doesn't have what you're looking for"</span><span class="p">)</span> <span class="p">{</span>
        <span class="nf">it</span><span class="p">(</span><span class="s">"needs to be updated"</span><span class="p">)</span> <span class="p">{</span>
          <span class="k">let</span> <span class="nv">you</span> <span class="o">=</span> <span class="kt">You</span><span class="p">(</span><span class="nv">awesome</span><span class="p">:</span> <span class="kc">true</span><span class="p">)</span>
          <span class="n">expect</span><span class="p">{</span><span class="n">you</span><span class="o">.</span><span class="n">submittedAnIssue</span><span class="p">}</span><span class="o">.</span><span class="nf">toEventually</span><span class="p">(</span><span class="nf">beTruthy</span><span class="p">())</span>
        <span class="p">}</span>
      <span class="p">}</span>
    <span class="p">}</span>
  <span class="p">}</span>
<span class="p">}</span>
</code></pre>
<h4 id='nimble' class='heading'>Nimble</h4>

<p>Quick comes together with <a href="https://github.com/Quick/Nimble">Nimble</a> — a matcher framework for your tests. You can learn why <code>XCTAssert()</code> statements make your expectations unclear and how to fix that using Nimble assertions <a href="./Documentation/en-us/NimbleAssertions.md">here</a>.</p>
<h2 id='swift-version' class='heading'>Swift Version</h2>

<p>Certain versions of Quick and Nimble only support certain versions of Swift. Depending on which version of Swift your project uses, you should use specific versions of Quick and Nimble. Use the table below to determine which versions of Quick and Nimble are compatible with your project.</p>

<table><thead>
<tr>
<th style="text-align: left">Swift version</th>
<th style="text-align: left">Quick version</th>
<th style="text-align: left">Nimble version</th>
</tr>
</thead><tbody>
<tr>
<td style="text-align: left">Swift 5.2</td>
<td style="text-align: left">v3.0.0 or later</td>
<td style="text-align: left">v9.0.0 or later</td>
</tr>
<tr>
<td style="text-align: left">Swift 4.2 / Swift 5</td>
<td style="text-align: left">v1.3.2 or later</td>
<td style="text-align: left">v7.3.2 or later</td>
</tr>
<tr>
<td style="text-align: left">Swift 3 / Swift 4</td>
<td style="text-align: left">v1.0.0 or later</td>
<td style="text-align: left">v5.0.0 or later</td>
</tr>
<tr>
<td style="text-align: left">Swift 2.2 / Swift 2.3</td>
<td style="text-align: left">v0.9.3</td>
<td style="text-align: left">v4.1.0</td>
</tr>
</tbody></table>
<h2 id='documentation' class='heading'>Documentation</h2>

<p>All documentation can be found in the <a href="./Documentation">Documentation folder</a>, including <a href="./Documentation/en-us/InstallingQuick.md">detailed installation instructions</a> for CocoaPods, Git submodules, Swift Package Manager, and more. For example, you can install Quick and <a href="https://github.com/Quick/Nimble">Nimble</a> using CocoaPods by adding the following to your <code>Podfile</code>:</p>
<pre class="highlight ruby"><code><span class="c1"># Podfile</span>

<span class="n">use_frameworks!</span>

<span class="n">target</span> <span class="s2">"MyApp"</span> <span class="k">do</span>
  <span class="c1"># Normal libraries</span>

  <span class="n">target</span> <span class="s1">'MyApp_Tests'</span> <span class="k">do</span>
    <span class="n">inherit!</span> <span class="ss">:search_paths</span>

    <span class="n">pod</span> <span class="s1">'Quick'</span>
    <span class="n">pod</span> <span class="s1">'Nimble'</span>
  <span class="k">end</span>
<span class="k">end</span>
</code></pre>

<p>You can also install Quick and Nimble using Swift Package Manager by adding the following to the dependencies section your <code>Package.swift</code>:</p>
<pre class="highlight swift"><code><span class="nv">dependencies</span><span class="p">:</span> <span class="p">[</span>
    <span class="o">.</span><span class="nf">package</span><span class="p">(</span><span class="nv">url</span><span class="p">:</span> <span class="s">"https://github.com/Quick/Quick.git"</span><span class="p">,</span> <span class="nv">from</span><span class="p">:</span> <span class="s">"7.0.0"</span><span class="p">),</span>
    <span class="o">.</span><span class="nf">package</span><span class="p">(</span><span class="nv">url</span><span class="p">:</span> <span class="s">"https://github.com/Quick/Nimble.git"</span><span class="p">,</span> <span class="nv">from</span><span class="p">:</span> <span class="s">"12.0.0"</span><span class="p">),</span>
<span class="p">],</span>
</code></pre>
<h2 id='projects-using-quick' class='heading'>Projects using Quick</h2>

<p>Over ten-thousand apps use either Quick and Nimble however, as they are not included in the app binary, neither appear in “Top Used Libraries” blog posts. Therefore, it would be greatly appreciated to remind contributors that their efforts are valued by compiling a list of organizations and projects that use them. </p>

<p>Does your organization or project use Quick and Nimble? If yes, <a href="https://github.com/Quick/Quick/wiki/Projects-using-Quick">please add your project to the list</a>.</p>
<h2 id='who-uses-quick' class='heading'>Who uses Quick</h2>

<p>Similar to projects using Quick, it would be nice to hear why people use Quick and Nimble. Are there features you love? Are there features that are just okay? Are there some features we have that no one uses?</p>

<p>Have something positive to say about Quick (or Nimble)? If yes, <a href="https://github.com/Quick/Quick/wiki/Who-uses-Quick">provide a testimonial here</a>.</p>
<h2 id='privacy-statement' class='heading'>Privacy Statement</h2>

<p>Quick is a library that is only used for testing and should never be included in the binary submitted to App Store Connect.
Your app will be rejected if you do include Quick in the submitted binary because Quick uses private APIs to better integrate with Xcode.</p>

<p>Despite not being shipped to Apple, Quick does not and will never collect any kind of analytics or tracking.</p>
<h2 id='license' class='heading'>License</h2>

<p>Apache 2.0 license. See the <a href="LICENSE"><code>LICENSE</code></a> file for details.</p>

          </section>
        </section>
        <section id="footer">
          <p>&copy; 2025 <a class="link" href="https://github.com/Quick/Quick" target="_blank" rel="external noopener">Quick Contributors</a>. All rights reserved. (Last updated: 2025-06-26)</p>
          <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external noopener">jazzy ♪♫ v0.15.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external noopener">Realm</a> project.</p>
        </section>
      </article>
    </div>
  </body>
</html>
